package com.ddwl.schema.vo.shop;

import cn.hutool.core.util.StrUtil;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * @Author hemiaojun
 * @Date 2021/5/7 10:19
 */
@ApiModel("配送方式vo")
@Getter
@Setter
public class ShopDistributionVo {

    @ApiModelProperty(value="id")
    private String id;

    /**
     * 店铺id
     */
    @ApiModelProperty(value="店铺id")
    private String shopId;

    /**
     * 是否开启自提：0否，1是
     */
    @ApiModelProperty(value="是否开启自提：0否，1是")
    private Integer selfMentionTag;

    /**
     * 自提取货地址
     */
    @ApiModelProperty(value="自提取货地址")
    private String takeAddr;

    @ApiModelProperty("同城配送发货地址区域id")
    private String localRegionId;

    /**
     * 取货开始时间
     */
    @ApiModelProperty(value="取货开始时间")
    private String busBegin;

    /**
     * 取货结束时间
     */
    @ApiModelProperty(value="取货结束时间")
    private String busEnd;

    /**
     * 是否开启同城配送：0否，1是
     */
    @ApiModelProperty(value="是否开启同城配送：0否，1是")
    private Integer localDeliveryTag;

    /**
     * 同城配送发货地址
     */
    @ApiModelProperty(value="同城配送发货地址")
    private String localAddr;

    /**
     * 同城配送发货时间（天数，几天内）
     */
    @ApiModelProperty(value="同城配送发货时间（天数，几天内）")
    private Integer localSendTime;

    /**
     * 同城配送起送金额
     */
    @ApiModelProperty(value="同城配送起送金额")
    private BigDecimal localMinAmount;

    /**
     * 免费配送距离(单位：千米)
     */
    @ApiModelProperty(value="免费配送距离(单位：千米)")
    private Integer freeDistance;

    /**
     * 每满多少公里(单位：千米)
     */
    @ApiModelProperty(value="每满多少公里(单位：千米)")
    private Integer addDistance;

    /**
     * 增加多少元（单位：元）
     */
    @ApiModelProperty(value="增加多少元（单位：元）")
    private BigDecimal addPrice;

    /**
     * 最大距离限制(单位：千米)
     */
    @ApiModelProperty(value="最大距离限制(单位：千米)")
    private Integer beyondDistance;

    /**
     * 超出最大距离限制配送方式：0不配送，1同城快递
     */
    @ApiModelProperty(value="超出最大距离限制配送方式：0不配送，1同城快递")
    private Integer beyondWay;

    /**
     * 同城快递价格（单位：元）
     */
    @ApiModelProperty(value="同城快递价格（单位：元）")
    private BigDecimal cityExpressPrice;

    /**
     * 是否开启快递配送：0否，1是
     */
    @ApiModelProperty(value="是否开启快递配送：0否，1是")
    private Integer logisticsTag;

    /**
     * 快递发货地址
     */
    @ApiModelProperty(value="快递发货地址")
    private String expressAddr;

    /**
     * 快递发货时间（天数，几天内）
     */
    @ApiModelProperty(value="快递发货时间（天数，几天内）")
    private Integer expressSendTime;

    /**
     * 是否包邮：0否，1是
     */
    @ApiModelProperty(value="是否包邮：0否，1是")
    private Integer freeTag;

    /**
     * 包邮区域：1全国包邮，2省份包邮
     */
    @ApiModelProperty(value="包邮区域：1全国包邮，2省份包邮")
    private Integer freeArea;

    @ApiModelProperty(value="包邮省份")
    private String freeList;

    @ApiModelProperty(value="包邮省份列表")
    private List<ProvinceVo> freeProvinceList;

    @ApiModelProperty(value = "波动邮费方式：0没有，1按件数")
    private Integer waveType;

    @ApiModelProperty(value = "基础邮费")
    private BigDecimal basePostage;

    @ApiModelProperty(value = "每增加多少件")
    private Integer addNumber;

    @ApiModelProperty(value = "增加多少元")
    private BigDecimal addNumPrice;

    @ApiModelProperty(value="特殊省份")
    private String specialList;

    @ApiModelProperty(value="特殊省份列表")
    private List<ProvinceVo> specialProvinceList;

    @ApiModelProperty(value = "特殊身份波动邮费方式：0没有，1按件数")
    private Integer specialWaveType;

    @ApiModelProperty(value = "特殊省份基础邮费")
    private BigDecimal specialBasePostage;

    @ApiModelProperty(value = "每增加多少件（特殊省份）")
    private Integer specialAddNumber;

    @ApiModelProperty(value = "增加多少元（特殊省份）")
    private BigDecimal specialAddPrice;


    public void setField(Map<String, Object> map) {
        if (StrUtil.isNotEmpty((String) map.get("freeList"))) {
            this.setFreeList((String) map.get("freeList"));
        }
        if (StrUtil.isNotEmpty((String) map.get("waveType"))) {
            this.setWaveType(Integer.valueOf((String) map.get("waveType")));
        }
        if (StrUtil.isNotEmpty((String) map.get("basePostage"))) {
            this.setBasePostage(new BigDecimal((String) map.get("basePostage")));
        }
        if (StrUtil.isNotEmpty((String) map.get("addNumber"))) {
            this.setAddNumber(Integer.valueOf((String) map.get("addNumber")));
        }
        if (StrUtil.isNotEmpty((String) map.get("addNumPrice"))) {
            this.setAddNumPrice(new BigDecimal((String) map.get("addNumPrice")));
        }
        if (StrUtil.isNotEmpty((String) map.get("specialList"))) {
            this.setSpecialList((String) map.get("specialList"));
        }
        if (StrUtil.isNotEmpty((String) map.get("specialWaveType"))) {
            this.setSpecialWaveType(Integer.valueOf((String) map.get("specialWaveType")));
        }
        if (StrUtil.isNotEmpty((String) map.get("specialBasePostage"))) {
            this.setSpecialBasePostage(new BigDecimal((String) map.get("specialBasePostage")));
        }
        if (StrUtil.isNotEmpty((String) map.get("specialAddNumber"))) {
            this.setSpecialAddNumber(Integer.valueOf((String) map.get("specialAddNumber")));
        }
        if (StrUtil.isNotEmpty((String) map.get("specialAddPrice"))) {
            this.setSpecialAddPrice(new BigDecimal((String) map.get("specialAddPrice")));
        }
    }

}
